import cv2 as cv

def face_check(ret):
    # 灰度图片
    gray = cv.cvtColor(ret, cv.COLOR_BGR2GRAY)
    #加载特征数据，来自opencv中一个默认的扫描机制
    face_detector = cv.CascadeClassifier("D:/OpenCV/opencv/opencv/data/haarcascades/haarcascade_frontalface_alt2.xml")
    #检测
    faces = face_detector.detectMultiScale(gray)
    #针对人脸划分区域
    for x,y,w,h in faces:
        cv.rectangle(ret, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2)
    #检测完后进行显示
    cv.imshow("result", ret)

#读取视频
cap = cv.VideoCapture("jaychou.mp4")
#读取视频上的图片，用循环读取每一张图片
while True:
    flag, frame = cap.read()
    #如果视频播放的末尾，就退出循环
    if not flag:
        break
    #如果视频没到末尾，就把每一张图片放入检测
    # 检测人脸
    face_check(frame)
    #如果输入"q"，就退出视频,这里每10毫秒播放一张图片
    if ord("q") == cv.waitKey(10):
        break

#后面两步都是释放内存空间
cv.destroyAllWindows()
cap.release